今天我們將會介紹剩下的幾個babel常用套件
我們時常在項目中看到.babelrc中使用babel-plugin-transform-runtime,
而package.json中的dependencies(注意不是devDependencies)又包含了babel-runtime
,那這兩個設定又起了什麼作用呢?
babel-runtime 在使用babel-plugin-transform-runtime的時候必須把babel-runtime當做依賴。
而babel-runtime它內部集成了
babel-plugin-transform-runtime 不支持實例方法(例如[1,2,3].includes(1))
npm install --save-dev @babel/plugin-transform-runtime
和 babel/runtime生產相關性(因為它是針對“運行時”的)。
npm install --save @babel/runtime
轉換插件通常僅在開發中使用,但是運行時本身將取決於部署的代碼。有關更多詳細信息,請參見下面的示例。
//範例
{
"plugins": ["@babel/plugin-transform-runtime"]
}
//範例
{
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"absoluteRuntime": false,
"corejs": false,
"helpers": true,
"regenerator": true,
"useESModules": false,
"version": "7.0.0-beta.0"
}
]
]
}
corejs
false
,2
,3
或{ version: 2 | 3, proposals: boolean }
,默認為false
。npm install --save @babel/runtime
, npm install --save @babel/runtime-corejs2
,npm install --save @babel/runtime-corejs3
helpers
boolean
默認為false
polyfill
regenerator
boolean
默認為false
useBuiltIns
useESModules
boolean
默認為false
absoluteRuntime
boolean
or string
默認為false
version
{
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"absoluteRuntime": false,
"corejs": 2,
"version": "^7.7.4"
}
]
]
}
前面提過babel的三種使用方法,並且已經介紹過了babel-cli。但一些大型的項目都會有構建工具(如webpack或rollup)來進行代碼構建和壓縮(uglify)。理論上來說,我們也可以對壓縮後的代碼進行babel處理,但那會非常慢。因此如果在uglify之前就加入babel處理,豈不完美?
所以就有了babel插入到構建工具內部這樣的需求。以(我還算熟悉的) webpack為例,webpack有loader的概念,因此就出現了babel-loader。
-cli一樣,babel-loader也會讀取.babelrc或者package.json中的babel段作為自己的配置,之後的內核處理也是相同。唯一比babel-cli複雜的是,它需要和webpack交互,因此需要在webpack這邊進行配置。
今天的把剩下babel稍微整理了一下,明天會詳細寫說webpack + babel-loader 基礎用法